﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Text;
using QLNHASACH.DTO;

namespace QLNHASACH.DataAccessLayer.ObjectDAO
{
    class SachDAO
    {
        //Lấy danh sách sách
        public static DataTable LayDSSach()
        {
            string sql="SELECT MaSach,TenDauSach,TenTheLoai,TacGia,NhaXuatBan,NamXuatBan,SoLuongTon,DonGiaBan FROM SACH,DAUSACH,"
            +"THELOAI WHERE SACH.MaDauSach=DAUSACH.MaDauSach AND DAUSACH.MaTheLoai=THELOAI.MaTheLoai";
            return DataAccess.GetDataTable(sql);
        }
        //Lấy danh sách tác giả
        public static DataTable LayDSTacGia()
        {
            string sql="SELECT DISTINCT TacGia FROM DAUSACH";
            return DataAccess.GetDataTable(sql);
        }
        //Lấy danh sách năm xuất bản
        public static DataTable LayDSNhaXuatBan()
        {
            string sql="SELECT DISTINCT NhaXuatBan FROM SACH";
            return DataAccess.GetDataTable(sql);
        }
        //Thêm một sách
        public static bool ThemSach(SachDTO sach)
        {
            string sql =string.Format("INSERT INTO SACH (MaDauSach, NhaXuatBan, NamXuatBan)"
                        + "VALUES ({0},N'{1}',{2})", sach.MaDauSach, sach.NhaXuatBan, sach.NamXuatBan);
            if (DataAccess.ExecuteQuery(sql))
            {
                return true;
            }
            return false;        
        }
        //Cập nhật một sách
        public static bool CapNhatSach(SachDTO sach)
        {
            string sql =string.Format("UPDATE SACH SET NhaXuatBan=N'{0}', NamXuatBan={1} where MaSach={2}"
                , sach.NhaXuatBan, sach.NamXuatBan, sach.MaSach);
            if (DataAccess.ExecuteQuery(sql))
            {
                return true;
            }
            return false;
        }
        //Xóa một sách
        public static bool XoaMotSach(SachDTO sach)
        {
            string sql="DELETE  FROM SACH WHERE MaSach=" + sach.MaSach + "";
            if (DataAccess.ExecuteQuery(sql))
            {
                return true;
            }
            return false;
        }
        //Kiểm tra sự tồn tại của một đầu sách
        public static bool KTMotDauSach(SachDTO sach)
        {
            string sql="select * from sach where MaDauSach=" + sach.MaDauSach + "";
            if (DataAccess.GetDataTable(sql).Rows.Count > 0)
                return true;
            return false;
        }
        //Kiểm tra sự tồn tại của một sách
        public static bool KTToiTaiCuaMotSach(SachDTO sach)
        {
            string sql="select * from Sach where MaDauSach=" + sach.MaDauSach + " and NhaXuatBan=N'" + sach.NhaXuatBan + "' and NamXuatBan=" + sach.NamXuatBan;
            if (DataAccess.GetDataTable(sql).Rows.Count > 0)
                return true;
            return false;
        }
        //Các thao tác tìm kiếm theo tên, thể loại.....
        public static DataTable TimTheoTenSach(string strSearch)
        {
            string sql="SELECT MaSach,TenDauSach,TenTheLoai,TacGia,NhaXuatBan,NamXuatBan,SoLuongTon,DonGiaBan FROM SACH a,DAUSACH b,"
            + "THELOAI c WHERE a.MaDauSach=b.MaDauSach AND b.MaTheLoai=c.MaTheLoai and dbo.ConvertString(TenDauSach) like dbo.ConvertString('%" + strSearch + "%')";
            DataTable dt=DataAccess.GetDataTable(sql);
            if (dt.Rows.Count > 0)
                return dt;
            else
                return null;
        }
        public static DataTable TimTheoTacGia(string strSearch)
        {
            string sql="SELECT MaSach,TenDauSach,TenTheLoai,TacGia,NhaXuatBan,NamXuatBan,SoLuongTon,DonGiaBan FROM SACH a,DAUSACH b,"
            + "THELOAI c WHERE a.MaDauSach=b.MaDauSach AND b.MaTheLoai=c.MaTheLoai and dbo.ConvertString(TacGia) like dbo.ConvertString('%" + strSearch + "%')";
            DataTable dt=DataAccess.GetDataTable(sql);
            if (dt.Rows.Count > 0)
                return dt;
            else
                return null;
        }
        public static DataTable TimTheoTheLoai(string strSearch)
        {
            string sql="SELECT MaSach,TenDauSach,TenTheLoai,TacGia,NhaXuatBan,NamXuatBan,SoLuongTon,DonGiaBan FROM SACH a,DAUSACH b,"
            + "THELOAI c WHERE a.MaDauSach=b.MaDauSach AND b.MaTheLoai=c.MaTheLoai and dbo.ConvertString(TenTheLoai) like dbo.ConvertString('%" + strSearch + "%')";
            DataTable dt=DataAccess.GetDataTable(sql);
            if (dt.Rows.Count > 0)
                return dt;
            else
                return null;
        }
        public static DataTable TimTheoNhaXuatBan(string strSearch)
        {
            string sql="SELECT MaSach,TenDauSach,TenTheLoai,TacGia,NhaXuatBan,NamXuatBan,SoLuongTon,DonGiaBan FROM SACH a,DAUSACH b,"
            + "THELOAI c WHERE a.MaDauSach=b.MaDauSach AND b.MaTheLoai=c.MaTheLoai and dbo.ConvertString(NhaXuatBan) like dbo.ConvertString('%" + strSearch + "%')";
            DataTable dt=DataAccess.GetDataTable(sql);
            if (dt.Rows.Count > 0)
                return dt;
            else
                return null;
        }
    }
}
